package org.jeecg.modules.wlhy.hyvehicle.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.wlhy.hydriver.entity.HyDriver;
import org.jeecg.modules.wlhy.hyvehicle.entity.*;

import java.util.List;

/**
 * @Description: 车辆管理
 * @Author: duanlikao
 * @Date:   2020-12-05
 * @Version: V1.0
 */
public interface IHyVehicleService extends IService<HyVehicle> {

    Result saveHyVehicle(HyVehicle HyVehicle);

    HyVehicle getHyVehicleByVehicleNumber(String vehicleNumber);

    HyVehicle getHyVehicleByVehicleNumberAndDriverId(String vehicleNumber, String driverId);

    Result getHyVehicleTypeById(Integer pid);

    List<HyVehicleType> getHyVehicleByPid(String pid);

    List<HyVehicle> getVehicleByDriverId(String driverId);

    HyVehicle getVehicletInfo(String id);

    void checkVehicleOwner(HyVehicle hyVehiclDb);

    Result checkVehicleNumber(HyVehicle hyVehiclDb);

    boolean checkRTCNoV2(HyVehicle hyVehiclDb);

    String vQueryLicenseV2(HyVehicle hyVehicle);

    HyVehicleType getHyVehicleType(String vehicleType);

    boolean uploadDaoda(HyVehicle hyVehicle);

    //辽宁税务上报车辆信息
    Result<?> lnTaxUploadVehicle(HyVehicle hyVehicle);

    Result<?> updatelnTaxUploadVehicle(HyVehicle hyVehicle);

    //辽宁税务上报车辆与司机绑定关系
    Result<?> lnTaxUploadVehicleDriver(HyVehicle hyVehicle);
    //辽宁税务上报车辆所需照片(行驶证主页、道路运输证 【行驶证副页正面、行驶证副页反面、车辆机动车登记证书、挂靠协议】)
    //index：-1上报所有照片 0-5上报对应单独照片
    Result<?> lnTaxUploadVehicleImg(HyVehicle hyVehicle, int index);
    //辽宁税务上报车辆所有信息
    Result<?> lnTaxUploadVehicleAll(HyVehicle hyVehicle);
    //辽宁税务上报车辆与司机解绑关系
    Result<?> lnTaxUploadUntieVehicleDriver(HyVehicle hyVehicle);
    boolean izVehicleLnUploadSuccess(HyVehicle hyVehicle);

    //快货运上报车辆
    Result<?> tosUploadVehicle(HyVehicle hyVehicle);

    int deleteVehicleById(String id);

    void saveBatchVehice(List<ImportHyVehiceDTO> list);

    boolean binding(String driverId, String vehicleId);

    Result zybBinding(HyVehicleReq hyVehicleReq);

    Result zybUnBinding(HyVehicleReq hyVehicleReq);

    IPage<HyVehicle> pageList(
            Page<HyVehicle> page,
            QueryWrapper<HyVehicle> queryWrapper, String customerId);

    int getDsvehicleCount(String customerById);

    boolean updateJgUploadStatusById(String id, String status);

    boolean updateSxUploadStatusById(String id, String status);

    boolean updateAhUploadStatusById(String id, String status);

    boolean updateHbUploadStatusById(String id, String status);

    boolean updateYuanquUploadStatusById(String id, String status);

    boolean updateJxUploadStatusById(String id, String status);

    boolean updateJsUploadStatusById(String id, String status);

    boolean updateZjUploadStatusById(String id, String status);

    boolean updateHubeiUploadStatusById(String id, String status);
    Result getVehicleListByHyCaptainId(String hyCaptainId);
    List<HyDriver> getDriversByVehicleId(String vehicleId);

    IPage<HyVehicle> pageList1(Page<HyVehicle> page, QueryWrapper<HyVehicleDTO> queryWrapper, String customerById);
}
